
pkgbase=openldap
pkgname=('libldap' 'openldap')
pkgver=2.4.46
pkgrel=2
arch=('x86_64')
url="https://www.openldap.org/"
license=('custom')
makedepends=('libtool' 'libsasl' 'e2fsprogs' 'util-linux' 'groff')
options=('!makeflags')
source=("https://www.openldap.org/software/download/OpenLDAP/openldap-release/${pkgbase}-${pkgver}.tgz"
        'slapd.service'
        'slapd.tmpfiles')
sha1sums=('a9ae2273eb9bdd70090dafe0d018a3132606bef6'
          '9c7f3441e6a6ee13cdcfe8d965081c7a574c3393'
          '59241a813d7508294e4ef1cec3bfe1f5495e109d')

build() {
  cd ${pkgbase}-${pkgver}

  sed -i 's|-m 644 $(LIBRARY)|-m 755 $(LIBRARY)|' libraries/{liblber,libldap,libldap_r}/Makefile.in
  sed -i 's|#define LDAPI_SOCK LDAP_RUNDIR LDAP_DIRSEP "run" LDAP_DIRSEP "ldapi"|#define LDAPI_SOCK LDAP_DIRSEP "run" LDAP_DIRSEP "openldap" LDAP_DIRSEP "ldapi"|' include/ldap_defaults.h
  sed -i 's|%LOCALSTATEDIR%/run|/run/openldap|' servers/slapd/slapd.conf
  sed -i 's|-$(MKDIR) $(DESTDIR)$(localstatedir)/run|-$(MKDIR) $(DESTDIR)/run/openldap|' servers/slapd/Makefile.in

  ./configure --prefix=/usr \
    --mandir=/usr/share/man \
    --libexecdir=/usr/lib \
    --sysconfdir=/etc \
    --localstatedir=/var/lib/openldap \
    --enable-ipv6 \
    --enable-syslog \
    --enable-local \
    --enable-bdb \
    --enable-hdb \
    --enable-crypt \
    --enable-dynamic \
    --enable-ldap \
    --with-threads \
    --disable-wrappers \
    --without-fetch \
    --enable-spasswd \
    --with-cyrus-sasl \
    --enable-overlays=mod \
    --enable-modules=yes
  make
}

check() {
  cd ${pkgbase}-${pkgver}
  # test022-ppolicy for bdb  fails
  make test
}

package_libldap() {
  pkgdesc="Lightweight Directory Access Protocol (LDAP) client libraries"
  depends=('libsasl' 'e2fsprogs')
  backup=('etc/openldap/ldap.conf')
  options=('!libtool')

  cd ${pkgbase}-${pkgver}
  for dir in include libraries doc/man/man3 ; do
    pushd ${dir}
    make DESTDIR=${pkgdir} install
    popd
  done
  install -Dm644 doc/man/man5/ldap.conf.5.tmp ${pkgdir}/usr/share/man/man5/ldap.conf.5
  
  rm ${pkgdir}/etc/openldap/*.default

  ln -sf liblber.so ${pkgdir}/usr/lib/liblber.so.2
  ln -sf libldap.so ${pkgdir}/usr/lib/libldap.so.2

  install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
}

package_openldap() {
  pkgdesc="Lightweight Directory Access Protocol (LDAP) client and server"
  depends=("libldap>=${pkgver}" 'libtool' 'util-linux')
  backup=('etc/openldap/slapd.conf' 'etc/conf.d/slapd')
  options=('!libtool' 'emptydirs')
  install=openldap.install

  cd ${pkgbase}-${pkgver}
  for dir in clients servers doc/man/man{1,5,8} ; do
    pushd ${dir}
    make DESTDIR=${pkgdir} install
    popd
  done
  rm ${pkgdir}/usr/share/man/man5/ldap.conf.5
  rm -r ${pkgdir}/run

  rm ${pkgdir}/etc/openldap/*.default

  ln -s ../lib/slapd ${pkgdir}/usr/sbin/slapd

  chown root:439 ${pkgdir}/etc/openldap/{slapd.conf,DB_CONFIG.example}
  chmod 640 ${pkgdir}/etc/openldap/{slapd.conf,DB_CONFIG.example}

  install -dm700 -o 439 -g 439 ${pkgdir}/var/lib/openldap
  install -dm700 -o 439 -g 439 ${pkgdir}/etc/openldap/slapd.d
  install -Dm644 ${srcdir}/slapd.service ${pkgdir}/usr/lib/systemd/system/slapd.service
  install -Dm644 ${srcdir}/slapd.tmpfiles ${pkgdir}/usr/lib/tmpfiles.d/slapd.conf
  install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
}

